import { getSetting, chooseAddress, openSetting, showModal, showToast, requestPayment } from "../../utils/asyncWx.js";
import { request } from "../../request/index.js";

/* 
  1 页面加载的时候,
    从缓存中获取购物车数据 渲染到页面中
    数据中 是被选中的数据
  2 微信支付
    1 那些人那些账号 可以实现微信支付
        1 企业账号  
        2 企业账号小程序后台中 给开发者添加上白名单

*/
// pages/cart/cart.js
Page({
    data: {
        // 用户地址
        address: {},
        // 购物车数据
        cart: [],
        // 总价格
        totalPrice: 0,
        // 总数量
        totalNum: 0
    },
    onShow() {
        //1 获取缓存中的收货地址信息
        const address = wx.getStorageSync('address');
        // 获取缓存中的购物车数据
        let cart = wx.getStorageSync("cart") || [];
        // 过滤后的购物车数组
        cart = cart.filter(v => v.checked);
        // 1 计算全选
        //  every 数组方法 会遍历 接收一个回调函数 每一个回调函数都返回true 那么every方法的返回值为true
        // 空数组调用every返回值为true
        // cart.length ? cart.every(v => v.checked) : false;
        this.setData({ address });


        //  计算总价格
        let totalPrice = 0;
        let totalNum = 0;
        cart.forEach(v => {
            totalPrice += v.num * v.goods_price;
            totalNum += v.num;
        });
        // 数据重新设置会data和缓存中
        this.setData({
            cart,
            totalPrice,
            totalNum,
            address
        });
        wx.setStorageSync("cart1", cart)
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {

    },
    // 点击支付
    async handlePrder() {
        try {
            // 1 判断缓存中有没有token
            const token = wx.getStorageSync("token");
            // 2 判断
            if (!token) {
                wx.navigateTo({
                    url: '/pages/auth/auth',
                });
                return;
            }
            //    3. 创建订单
            // 3.1 请求头参数
            const header = { Authorization: token };
            // 3.2 请求体参数
            const order_price = this.data.totalPrice;
            // 3.3 订单地址
            const consignee_addr = this.data.address;
            // 3.4 订单数组
            let goods = [];
            const cart = this.data.cart;
            cart.forEach(v => goods.push({
                    goods_id: v.goods_id,
                    goods_number: v.num,
                    goods_price: v.goods_price
                }))
                // 4 准备发送请求,创建订单，获取订单编号

            const oderParams = { order_price, consignee_addr, goods }
            let { order_number } = await request({ url: '/my/orders/create', method: "post", data: oderParams, header })
            console.log(order_number);

            if (!order_number) {
                order_number = "HMDD20190802000000000428"
            }
            // console.log(order_number);
            // 5. 发起预支付接口
            const { pay } = await request({ url: '/my/orders/req_unifiedorder', method: "post", data: { order_number }, header });
            //   6 发起微信支付
            const res1 = await requestPayment(pay);
            // 7. 查询后台 订单状态
            const res = await request({ url: '/my/orders/chkOrder', method: "post", data: { order_number }, header })

            // 删除缓存中选中的商品数据
            let newCart = wx.getStorageSync("cart");
            newCart = newCart.filter(v => !v.checked)
            wx.setStorageSync("cart", newCart);

            // 8 . 支付成功，跳转页面
            wx.navigateTo({
                url: '/pages/order/order',
                success: (result) => {

                },
                fail: () => {},
                complete: () => {}
            });
        } catch (error) {
            await showToast({
                title: '支付失败'
            })
        }

    }
})